#pragma once

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>

using namespace cv;
using namespace std;

enum class FilterType {
	Box,
	Gaussian,
	Sobel,
	Laplacian
};

class Filter
{
private:
	vector<double> kernelX;
	vector<double> kernelY;
public:
	Filter(FilterType type, int size = 3, double sigma = 0);
	Mat apply(Mat src);
	Mat apply1dim(Mat src, bool XorY);
};

